home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch8s < prev    next >
Encoding:
Internet Message Format  |  1990-06-08  |  39.4 KB

  1. Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v10i037:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch8s
  5. Message-ID: <5745@tekred.CNA.TEK.COM>
  6. Date: 5 Jun 90 18:01:48 GMT
  7. Sender: news@tekred.CNA.TEK.COM
  8. Lines: 817
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 10, Issue 37
  13. Archive-name: NetHack3/Patch8s
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16.  
  17.  
  18. #! /bin/sh
  19. # This is a shell archive.  Remove anything before this line, then unpack
  20. # it by saving it into a file and typing "sh file".  To overwrite existing
  21. # files, type "sh file -c".  You can also feed this as standard input via
  22. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  23. # will see the following message at the end:
  24. #        "End of archive 19 (of 24)."
  25. # Contents:  Install.ovl mac/MD.proj.hqx others/exesmurf.c
  26. # Wrapped by billr@saab on Tue Jun  5 09:09:04 1990
  27. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  28. if test -f 'Install.ovl' -a "${1}" != "-c" ; then 
  29.   echo shar: Will not clobber existing file \"'Install.ovl'\"
  30. else
  31. echo shar: Extracting \"'Install.ovl'\" \(14761 characters\)
  32. sed "s/^X//" >'Install.ovl' <<'END_OF_FILE'
  33. X        Instructions for compiling and installing the Overlaid
  34. X            NetHack 3.0 on an MS-DOS system
  35. X        ======================================================
  36. X            (or, How to make PC NetHack 3.0)
  37. X              Last revision: June 02, 1990
  38. X
  39. X    (Credit for a runnable full PC NetHack 3.0 goes to the overlay team of
  40. X     Pierre Martineau, Stephen Spackman, Norm Meluch, and Kevin Smolkowski,
  41. X     who built on the work of Steve Creps and Mike Threepoint.)
  42. X
  43. X
  44. XI.  Dispelling the Myths:
  45. X
  46. X    Compiling NetHack is not as easy as it sounds, nor as hard as it looks,
  47. X    however it will behoove you to read this entire file through before
  48. X    beginning the task.
  49. X
  50. X    The NetHack executable that you are about to get will be generated by an
  51. X    overlay linker.  The beauty of this overlay linker beastie is that it will
  52. X    create an executable that will function in much less memory than it would
  53. X    "normally" take to run.  Do not be deceived.  The RAM requirement for the
  54. X    overlay version is about 550k!  You can load the program in less RAM, but
  55. X    you will begin to experience a serious amount of disk thrashing at 530k
  56. X    or less.  Absolute minimum will probably be in the neighborhood of 380-400k.
  57. X    You do not want to run the program like that!  The more free RAM you have
  58. X    available for the program, the more smoothly it will run.
  59. X
  60. X    The magic piece to the overlay puzzle is a program called ovlmgr.asm.  This
  61. X    is a replacement for the Microsoft (and we use the term loosely) overlay
  62. X    manager.  This program has been enhanced since its release in November
  63. X    1989.  It will now allow NetHack to use EMS memory if any is available,
  64. X    therefore, RAM requirements can be reduced to the minimum with at least
  65. X    256K of EMS.
  66. X
  67. X    As of patch level 7, version 3.0 has an added feature in the Makefile.  
  68. X    This feature enables a structured break-up of the object modules so that 
  69. X    we can link heavily used functions together without actual source code
  70. X    movement.  This has provided a great speed improvement for this release.
  71. X    See the file others\maintain.ovl for more information on this structuring.
  72. X
  73. X
  74. XII.  How long is this going to take?
  75. X
  76. X    On an XT class PC it has been rumored that NetHack can be built in 8 - 10
  77. X      hours.
  78. X    On a 286 10MHz PC you can build NetHack in about 3 - 3.5 hours,
  79. X    On the flip side if you have a 386 33MHz PC with a *VERRRRY* fast hard
  80. X      disk, math coprocessor, 32 bit bus, and severe I/O caching you will have
  81. X      NetHack in about 15 minutes!
  82. X    
  83. X    Hope you enjoy the game.  We have worked very hard to try to bring it back
  84. X    to the PC.
  85. X
  86. X
  87. XIII.  Tools:
  88. X
  89. X   The following programs are necessary to successfully compile the overlaid
  90. X   version of NetHack:
  91. X
  92. X   A.    Microsoft C, version 5.1 or newer.
  93. X
  94. X   B.    The Microsoft Overlay Linker, version 3.6 or newer or preferably,
  95. X     the Microsoft Segmented Linker, version 5.01.20 or newer. The
  96. X     overlay linker has been known to cause problems with other
  97. X     programs, but not with NetHack, yet.
  98. X    One of these linkers should be included in your MSC version.
  99. X
  100. X   C.    NDmake, version 4.5 or newer, (available from your local ftp site).
  101. X     As the overlay makefile is pretty large, you will want to use the
  102. X     large model of NDmake: MAKE45L.EXE, as your make program.
  103. X    MSC 6.0 has a new make program distributed with it that might be
  104. X     able to handle the Makefile.ovl with a few modifications.  This has
  105. X     not been completely tested.  We recommend NDmake 4.5.
  106. X
  107. X
  108. XIV.  Optional tools:
  109. X
  110. X   The following programs are not necessary, because pre-built copies of the
  111. X   files are included in this distribution.  However, if you want to build
  112. X   NetHack 100% from scratch, you will need them.
  113. X
  114. X   A.    An 80x86 assembler.
  115. X    This is for assembling the ovlmgr.asm file into ovlmgr.obj.  If you
  116. X     want to assemble your own copy of the overlay manager.  The file
  117. X     others\ovlmgr.uu is a uuencoded version of the assembled ovlmgr.asm.
  118. X    For details, see the file ovlmgr.doc.
  119. X
  120. X   B.    Yacc/Bison & Lex/Flex workalike programs for the PC.
  121. X    The source files for the special levels compiler are built using
  122. X     bison and flex.  Precompiled copies of the files lev_lex.c, and
  123. X     lev_comp.c have been provided if you do not have these utilities.
  124. X    Bison & flex should also be available at your local ftp site.
  125. X
  126. X
  127. XV.  To compile your copy of NetHack on a MSDOS machine:
  128. X    (or "just follow the "simple" steps outlined below.)
  129. X
  130. X1.  It almost goes without saying that you should make sure that your tools
  131. X    are set up and running correctly.
  132. X
  133. X2.  Make sure all the NetHack files are in the appropriate directory
  134. X    structure.  You should have a main directory with subdirectories
  135. X    src, include, auxil, others, amiga, mac, and vms.  If you do not
  136. X    follow this structure, the Makefile.ovl will not function properly.
  137. X
  138. X    All the shared and UNIX-specific .c files and the source Makefile(.src)
  139. X    belong in src; all the PC *.c files and PC make files belong in others;
  140. X    all the .h files belong in include; other assorted files belong in auxil.
  141. X    Check the file "Files" in your top level directory for an exact listing
  142. X    of what file is in which directory.
  143. X
  144. X    We will not need any of the files from the amiga, mac, and vms
  145. X    directories, so you can delete them if you need the space.
  146. X
  147. X    If you downloaded or ftp'd the sources from a UNIX system, the lines
  148. X    will probably end in UNIX-style newlines, instead of the carriage
  149. X    return and line feed pairs used by DOS.  Some programs have trouble
  150. X    with them,  you may need to convert them (with a utility like
  151. X    Rahul Dhesi's "flip").  Also, every file should end with an empty
  152. X    line, because both Microsoft C and MASM have a habit of ignoring the
  153. X    last line of each file. 
  154. X
  155. X3.  Move/Copy files from the others directory to your src directory
  156. X    based on the following criteria.  You will probably want to include
  157. X    most all of these files.
  158. X
  159. X    You will definitely need pc*.c, msdos.c, and trampoli.c.
  160. X
  161. X    random.c is only needed if you want the high-quality random number
  162. X    generation routines.
  163. X
  164. X    You should be able to use either others/lev_lex.c (generated by flex)
  165. X    or src/lev_lex.c (generated by lex), but the one in src is smaller.
  166. X    If you have flex or some other lex work-alike, you can use that to
  167. X    produce lev_lex.c from lev_comp.l.
  168. X
  169. X    The file termcap.uu is the fixed version of the Fred Fish termcap library.
  170. X    You will need to run a uudecode utility on it to generate the file
  171. X    termcap.arc.  termcap.arc contains several files of termcap routines.
  172. X    Using them with NetHack involves very little knowledge of the UNIX concept
  173. X    of a termcap database; mostly you need to know enough to set a TERM
  174. X    environment variable.  You can unarc termcap.arc here in the others
  175. X    directory, but if you are going to use it, it is probably best to unarc a
  176. X    copy in the src directory.  That way you will not miss copying any
  177. X    files over.  Wherever you unarc it, get rid of the included makefile
  178. X    since a better version has been provided as Makefile.lib.
  179. X
  180. X    ovlmgr.uu (MS-DOS overlay manager) is the uuencoded assembled
  181. X    object module for the overlay manager in case you do not have an assembler.
  182. X    You will need to run a uudecode utility on this file too, to generate
  183. X    ovlmgr.obj.
  184. X
  185. X    Exesmurf.uu is the uuencoded copy of the exesmurf utility which displays
  186. X    and modifies the contents of an executable file header.  It is similar
  187. X    to Microsoft's exemod utility but it provides infomation on overlays
  188. X    which EXEMOD does not.  It is used to modify the Nethack executable's
  189. X    memory allocation.
  190. X
  191. X4.  Rename the file Makefile.ovl to "Makefile." (no extension), and move 
  192. X    it into your src directory.
  193. X
  194. X    The PC NetHack makefiles are set up for NDMAKE, a public domain
  195. X    "make" utility.  Both Microsoft's "make" leaves much to
  196. X    be desired.  It is worth the extra effort to get NDMAKE if you don't
  197. X    already have it.  Among other things, NDMAKE automatically generates
  198. X    link response files when the link command involves so many objects
  199. X    that the command would become longer than DOS can handle.  If you must
  200. X    use Microsoft's or Borland's "make", you'll need to edit the makefile
  201. X    into a form your make can use, and add instructions to generate a link
  202. X    response file.
  203. X
  204. X    If you are going to be constructing the Fred Fish termlib you will need 
  205. X    the Makefile.lib.  Copy this to your source directory too, and do not 
  206. X    change its name.
  207. X
  208. X    Makefile.top in the top directory, Makefile.src in the src directory,
  209. X    and Makefile.aux(il) in the auxil directory are for UNIX NetHack. You
  210. X    will not need these, and you may delete them.
  211. X
  212. X    Makefile.pc, Makefile.msc, and Makefile.tos are for compiling non-
  213. X    overlaid versions of NetHack, and for the atari.  You may delete these
  214. X    too.
  215. X
  216. X4.  Now go to the include subdirectory to edit a couple of the header files
  217. X    there.
  218. X
  219. X    First edit config.h according to the comments to match your system and
  220. X    desired set of features.  Mostly you need to check the WIZARD option,
  221. X    make sure the HACKDIR is set properly, and check TERMLIB and COMPRESS.
  222. X  
  223. X    Using Microsoft C and overlays, we've managed to enable all the special
  224. X    features.  You may include all the neat features you want.
  225. X
  226. X    Also check pcconf.h, which should not need much editing (if you are
  227. X    including termcap.uu and random.c).  If you are not including these, you
  228. X    will need to comment out TERMLIB and/or RANDOM.  You should make doubly
  229. X    certain that OVERLAY is defined in pcconf.h, since otherwise things will
  230. X    compile properly but very ugly things are likely to happen wherever
  231. X    function pointers cross overlay boundaries - the linker is a little thick
  232. X    about that.
  233. X
  234. X    Commenting out the #define TERMLIB in pcconf.h to disable use of termcap
  235. X    routines (relying on the ANSI_DEFAULT feature) will make your job a bit
  236. X    easier.  However, you can compile with both TERMLIB and ANSI_DEFAULT
  237. X    and simply not set your TERM variable if you do not wish to use the
  238. X    termcap file settings.
  239. X
  240. X6.  If you want to change the high score list behavior, examine the top of
  241. X    topten.c, in the src directory.  You may want to change the definitions of
  242. X    PERSMAX, POINTSMIN, and ENTRYMAX.  I set POINTSMIN to 51 and ENTRYMAX to
  243. X    50 to keep the size of the score list down.
  244. X
  245. X7.  Go to the src directory and edit the top of your Makefile.  Be sure the
  246. X    directory you want the game installed (GAMEDIR) in actually exists.
  247. X
  248. X    If you elected not to use the high-quality BSD random number routines by
  249. X    commenting out RANDOM in pcconf.h or tosconf.h, comment out (or set equal
  250. X    to nothing) the RANDOM macro in your Makefile.
  251. X
  252. X    If you elected to use Fred Fish's termcap library (bundled in as
  253. X    termcap.arc), you will have to generate termlib.lib from those sources
  254. X    by typing "make -f makefile.lib".  You must also set the TERMLIB option
  255. X    in Makefile.ovl to link in the resulting termlib.lib.
  256. X
  257. X    If you have a MASM compatible Assembler, you may want to enable the option
  258. X    in the makefile to rebuild ovlmgr.obj, although a ready-made object file 
  259. X    is provided for those of you without.   Before assembling ovlmgr, be sure
  260. X    to read ovlmgr.doc as there are several options that you may or may not
  261. X    wish to enable/disable.
  262. X    
  263. X    If you are recompiling after patching your sources, or if you got your
  264. X    files from somewhere other than the official distribution, "touch
  265. X    makedefs.c" to ensure that certain files (onames.h and pm.h) are remade,
  266. X    lest potentially troublesome timestamps fool "make".
  267. X
  268. X8.  Now, enter "make45l install", and take a long siesta; your computer will
  269. X    be occupied for a long time.  If all goes well, you will get an executable.
  270. X
  271. X9.  Make sure the support files -- data, rumors, cmdhelp, opthelp, help, hh,
  272. X    history, license, and oracles (if ORACLE was #define'd) -- were copied
  273. X    to the game directory.  If not, move them there from the auxil directory
  274. X    yourself.  rumors can be created manually by entering "makedefs -r",
  275. X    data by entering "makedefs -d".
  276. X
  277. X    If you compiled in the special levels (if STRONGHOLD was #define'd), make
  278. X    sure castle, tower?, and possibly endgame are there, too.  They can be
  279. X    created manually by entering "lev_comp filename.des", where filename.des
  280. X    is the appropriate description file (found in the auxil directory).
  281. X
  282. X    Make sure the files NetHack.cnf and termcap also made it to your game
  283. X    directory.  If not go to the others directory and copy NetHack.cnf and
  284. X    termcap to your game directory.  Edit NetHack.cnf to reflect your
  285. X    particular setup and personal preferences, by following the comments.
  286. X
  287. X    If you'll be running NetHack from a different subdirectory, you will
  288. X    want to "set HACKDIR=c:\games\nethack" (or whatever drive and directory 
  289. X    you want to use) now.  Add it to your autoexec.bat (in DOS), if you'll 
  290. X    be playing often.
  291. X
  292. X11. Play NetHack.  If it works, you're done!
  293. X
  294. X
  295. XNotes
  296. X-----
  297. X1)  First and foremost:  We have been developing with MSC 5.1 as a compiler
  298. X    and NDmake 4.5 as a make.  NDmake is readily available on the Usenet;
  299. X    obtaining MSC might be more of a problem.  MSC 5.0 is broken.  You *will
  300. X    not* be able to compile the overlay version with that compiler due to
  301. X    problems with the /Gt option allowing the CONST segment to become
  302. X    > 64k when linking.
  303. X    MSC 6.0 and its make utility have been used to generate an overlaid
  304. X    NetHack.exe, however sufficient testing has not been completed at this
  305. X    time for us to "recommend" its use.
  306. X
  307. X2)  Save files and bones files from previous versions will not work with
  308. X    NetHack 3.0.  Don't bother trying to keep them.  Record (score) files
  309. X    from before 3.0 patchlevel 7 will almost work, but you need to make one
  310. X    change manually to them:  At the end of each line is a word or phrase
  311. X    specifying what killed the player.  Change the string to start with the
  312. X    words "killed by", "killed by a", or "killed by an" (whichever is
  313. X    appropriate).  If the death was petrification, it should read "petrified
  314. X    by" instead of "killed by".  Don't change "starvation", "quit", "escaped",
  315. X    or "ascended".
  316. X
  317. X3)  To install an update of NetHack after changing something, enter "make"
  318. X    from the src directory.  If you add, delete, or reorder monsters or
  319. X    objects, or you change the format of saved level files, delete any save
  320. X    and bones files.  (Trying to use such files sometimes produces amusing
  321. X    confusions on the game's part, but usually crashes.)
  322. X
  323. X4)  During linking the Microsoft Overlay Linker will need temporary storage
  324. X    space.  Make sure you have about a meg of free disk wherever you have
  325. X    defined your temporary storage.
  326. END_OF_FILE
  327. if test 14761 -ne `wc -c <'Install.ovl'`; then
  328.     echo shar: \"'Install.ovl'\" unpacked with wrong size!
  329. fi
  330. # end of 'Install.ovl'
  331. fi
  332. if test -f 'mac/MD.proj.hqx' -a "${1}" != "-c" ; then 
  333.   echo shar: Will not clobber existing file \"'mac/MD.proj.hqx'\"
  334. else
  335. echo shar: Extracting \"'mac/MD.proj.hqx'\" \(17003 characters\)
  336. sed "s/^X//" >'mac/MD.proj.hqx' <<'END_OF_FILE'
  337. X(This file must be converted with BinHex 4.0)
  338. X
  339. X:$@eKDf9NC@Cc,R"bEfS!8&*25NY"5%`!N!JhP#4S!*!%!3#3!cAk!!!dqJ!!!CS
  340. X!!""G$80bD@0VCA3J4h*KF'J#!*!$39"36%0(8NBK"!eYB@YPC'9QFbj`FQpU!J#
  341. X3!e"56dT,38K-!3#3"&J!!&"56dT,38K-!3#3"&J!!%e9!*!0!U)XCN!!N!BhP!#
  342. X3#K8!N!-3A3pQD@jN)%e')'CKBh4[FR-#!*!$39"36%eZ4Q3K"!!+!#`!N!3L#J#
  343. X3$PN8!!"F!+(@VNLKeUj2SGH0eJ#3(Jc-!!%0KJ!@!*!'!r!!N2m!N2m!N2m!N2,
  344. XF!!!"@!!!F!8!!%459P)"8!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+h
  345. XX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#
  346. Xf!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!
  347. X`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m
  348. X`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!8
  349. X3#'eKDf9NC@CcYJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!
  350. X!rc!!YJ#3"4""8&"-EQK04!J!!B!!N!-+#!!!"J#3!`B!N!9J!*!$F!#3"e!!N!-
  351. XJ!"`r2!!"UI!%#Mmm!!'Tm!3H2c`!!DR`"$)r2!!"UI!%6Mmm!!'Tm!5%2c`!!DR
  352. X`"+3r2!!"UI!%aMmm!!'Tm!6Q2c`!!DR`"air2!!"UI!!N!-%!*!("!#30!&B!!"
  353. X`"3!!4&*@8J&3!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B
  354. X!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#
  355. XYl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!
  356. X!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!
  357. X!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$
  358. Xr-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!
  359. X&%%&38%aYDf3U!!!"J!#3!`J!!2m`!,B!N!d+!*!-*!!!-iUS!$0Qk!!cCi`!!!+
  360. X)!*!&-J#3&N#!lNi!-fES3!!!d!!cCV3!N!8cC[!!-fEd!$0Qq!!cC[`!-fF!!$0
  361. XR"!!cC`J!-fF-!$0R%!!cCa3!-fFB!$0R(!!cCb!!-fFN!$0R+!!cCb`!-fF`!$0
  362. XR0!!cCcJ!-fFm!$0R3!!cCd3!-fG)!$0R6!!cCe!!-fG8!$0R@!!cCe`!-fGJ!$0
  363. XRC!!cCfJ!-fGX!$0RF!!cCh3!-fGi!$0RI!!cCi!!-fH%!$0RL!!cL!!!-i-N!$0
  364. Xq5!!cIK3!-hhN!$0pY!!cH0J!-h0S!$0YC!!cCm#!!!@N!!!"!!)!#3N!!3!!rj!
  365. X)SL3#2!!D!!%!!#R968&,43!+E@&VC@4PCR-ZB`#3!`'JR-eYS*c0ED#Fc@d!'J!
  366. X#!!!RrNe"3dJ"#NeKBdKPB@4PFR-!N!-"SLaT$U)XD3kL,'N1!"J!!3!!+GC$6dj
  367. X'!!KMEfjQD@FZD!"c!!+L(KlhSKiHpk)H([F!'J!"!!!TeP45383!#R4bB@4cG'4
  368. XM,QJ!N!-#SKiG4D)H(8@L(Ke&!"J!!3!!+GC(6%p#!!KRE'pLB@`ZD!"S!!1Jar@
  369. XhS-IeYk$(pEF!&J!#!!!SB&084%N""h0dC'P[,QJ!!!1L(K[jSKiEqD)H'rN!&J!
  370. X"!!!TeN026e)!"f0[Eh*N,QJ!!!1L*`[LSLF,iU)R#q)!'!!"!!!TeNe"3d-!#@e
  371. XKBf0[EQBZD!!!"+)H(JDL(Ki'SKiH"J!@!!%!!#R@690%6`!(EA0NEh-ZD!!!"+)
  372. XH(Y1L(Kl6SKiHd`!B!!%!!#R@8eP69!!)FhPcG'9Y,QJ!N!-%S*cGjD#FhH@JR0h
  373. XP!"B!!J!!+'"858e&!3CdD@eP,QJ!D!!%S*cG0k#Fh6HJR0dh!"B!!J!!+'"'3dj
  374. X8!3G'BfjdE#jS!!!%S*cGV+#FhDbJR0fX!"J!!J!!+'"69%4%!3K6G'4NC@BZD!#
  375. X3!`5JR0h9S*cGeD#FhG8!'!!#!!!SB&084%`"#&0dC'aTBLjS!*!$"+$(p0QJar6
  376. XCS-Idf3!B!!)!!#KJ8e4553%)8h4bD@jR,QJ!N!-%S*c03k#Fc81JR-e$!"J!!J!
  377. X!+!03390$!3K`BA0MB@`ZD!#3!`5JR-BRS*c'*k#FaLF!'J!#!!!S!e&958-"#e&
  378. XeD@0VC(*KGbjS!!!%S*c&jU#FaHDJR-AQ!"J!!J!!+!0'6dj8!3P'Efjd6@Gb,QJ
  379. X!!!5JR-A9S*c&eD#FaG8!'J!#!!!S!d9@48i"#N9fC@jd6@Gb,QJ!N!-%S*c'Hk#
  380. XFaRZJR-Cl!"S!!J!!+!0A58j%!3YAD@jNEhG0Ch)ZD!!!"+#FaJ5JR-B%S*c'"!!
  381. XB!!)!!#J$689193%*6@9ZG8eRFLjS!!!%S*c'Ak#FaPqJR-CI!"`!!J!!+!069%4
  382. X'!3a6G'4'D@aP8'YR,QJ!E`!%S*c'2k#FaMqJR-Br!"`!!J!!+!0648G0!3a6C@G
  383. XYC@jd6'4b,QJ!E`!%S*c'ED#FaQfJR-CY!"`!!J!!+!086dp-!3e8EfpXBQpi9A4
  384. XTE#jS!!!%S*c'$U#FaJkJR-B1!"J!!J!!+!028e98!3K28e9dD@`ZD!"T!!5JR-A
  385. X$S*c&`k#FaF-!'J!#!!!S!d4*38`"#d4TB@a[CdeRFLjS!!!%S*c&fU#FaGUJR-A
  386. XD!"J!!J!!+!0'58a&!3P'D@aP6@Gb,QJ!!!5JR-AXS*c&l+#FaH`!&!!#!!!S!dK
  387. X'8bi""8K'8bjS!!!%S,%p&D#a24@JX6d9!"B!!J!!+!0$6da2!3G$Efa[FLjS!!!
  388. X%S*c'+k#FaLZJR-BV!"`!!J!!+!054902!3e5CA0[GA*MC8eRFLjS!!!%SLQSeU)
  389. XTU0DL+DM@!"J!!3!!+GC&@&4&!!KPH(4PFQiZD!"R!!5L(KZDSKiEQU)H'jS!'J!
  390. X"!!!TeNe"3d%!#NeKBd&XCA*d,QJ!,J!"SKiHBD)H(Q'L(KjK!"S!!3!!+GC349*
  391. X0!!T`CA*YEfjcG#jS!#i!!U)H(DUL(KfUSKiGUJ!B!!%!!#R@68p133!*E@pZBA4
  392. XdDbjS!!!#SKiGiU)H(H+L(KhL!"J!!3!!+GC06dj'!!PYEfjQE'&R,QJ!!!'L(Ki
  393. XZSKiH,U)H(Li!'J!"!!!TeNp#5N-!#QpLDQ0XBA0c,QJ!,J!"S*c&Sk#FaD1JR-@
  394. XM!"`!!J!!+!0$6dj8!!a$EfjdFQpX6@Gb,QJ!!)!!"J3!N!2m!J!*#3!"!!$rN!L
  395. XL(MID!"B!!3!!+G906dj6!!GYEfjcG#jM!!!"S*c0ED#Fc@fJR-eY!"S!!J!!*rj
  396. X0380)!3T0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J!B!!%!!#R@3dp14J!)Bfp
  397. XZCQPR,QJ!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N&%!!TdFQ&NFh4NBbjS!#i
  398. X!!U)H(8@L(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ&X,QJ!D!!$S-IeYk$(pEH
  399. XJar@h!"B!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD)H'rQL(K[j!"B!!3!!+GC
  400. X$6dp5!!GMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3!!+GC0380$!!PYB@0MEfj
  401. XQ,QJ!!!5L(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fecC'pc,QJ!!!5L(Kl6SKi
  402. XHdk)H(Y-!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+#FhH@JR0hPS*cGj3!@!!)
  403. X!!#KJ9%P043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`!@!!)!!#KJ4N019!%(4Q0
  404. XZG'`ZD!!!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!%)8h4NC'9Q,QJ!N!-%S*c
  405. XGeD#FhG@JR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!#3!`5Jar6CS-IdfD$(p0N
  406. X!'!!#!!!SB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e$S*c03`!B!!)!!#J$8%&
  407. X63`%)F'&cBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J!!+!0498P$!3Y4G@PMDf4
  408. XbBAFZD!!!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!%*4QpZG%eRFLjS!!!%S*c
  409. X&eD#FaG@JR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLjS!*!$"+#FaRZJR-ClS*c
  410. X'H`!D!!)!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B%S*c'"+#FaJ3!'!!#!!!
  411. XS!de&6P8"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`!F!!)!!#J$8e4%4J%-8h4
  412. XN4QPXC9"VCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63%-8f9RE@9ZG%a
  413. XNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'*[H&9dD@`ZD!!
  414. X!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3!%S*c&`k#FaF1
  415. XJR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-ADS*c&fJ!B!!)
  416. X!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!!+!0)4P-Z!39
  417. X)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh)ZD!!!"+#FaLZ
  418. XJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+)TU0DL+DM@SLQ
  419. XSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZD!"S!!3!!+GC
  420. X0380"!!T0B@0"E'9bG#jS!#i!!D)H(Q'L(KjKSKiHB3!D!!%!!#R@8%9563!+F'9
  421. XbE@pZFh3ZD!!Z!!+L(KfUSKiGUU)H(DS!'!!"!!!TeNe26N%!#@e[EQ&dG'XZD!!
  422. X!!U)H(H+L(KhLSKiGiJ!B!!%!!#R@68p14J!*E@pZCQaKCbjS!!!"SKiH!D)H(J'
  423. XL(Ki"!"J!!3!!+GC06dj6!!KYEfjcH@dZD!#3!`'L(K`hSKiF0k)H($F!&J!"!!!
  424. XTeN965%X!"Q9cD'XZD!"S!!'L(Kp&SKiI4D)H(d8!&J!"!!!TePC"98`!"hCKG@a
  425. Xd,QJ!!!'L(K``SKiF-+)H($!!&J!"!!!TeN938NN!"Q9`FQNZD!#3!`'L(K[$SKi
  426. XE`k)H'm-!&J!"!!!TeN026%m!"f0[E'pb,QJ!JJ!&F!#3!rJ#!!N*!!%!!2q3#+)
  427. XN!Zd!'!!"!!!Te8p#5N8!#@pLDQ9MG(-ZB`!!!D#Fc@fJR-eYS*c0E3!D!!)!!#I
  428. Xq68&$5!%+6@&M5'9KC'9bF`!Z!!'L,'N1SLaT$U)XD3i!'!!"!!!TeN026NB!#'0
  429. X[EQCTCbjS!(-!!U)H([HL(KlhSKiHp`!D!!%!!#R@9&*"4!!+G(*KC(0dC'-ZD!!
  430. XZ!!+L(Ke&SKiG4D)H(88!'!!"!!!TeNG-6d)!#'GXEf*KE#jS!'J!!k$(pEHJar@
  431. XhS-IeY`!@!!)!!#KJ8e4%53%(Fh4ND@mZD!!!!k)H'rQL(K[jSKiEq3!@!!%!!#R
  432. X@3dp28J!(Bfp[FQ3ZD!!!!k)R#q+L*`[LSLF,iJ!B!!%!!#R@68&$3`!*E@&MBfp
  433. XZCLjS!!!%SKiH"U)H(JDL(Ki'!"B!!3!!+GC08d42!!GYFf4[FbjS!!!%SKiHdk)
  434. XH(Y1L(Kl6!"J!!3!!+GC6@908!!KcHA0dC@dZD!#3!`5JR0hPS*cGjD#FhH8!&J!
  435. X#!!!SB&4*688""R4TE@8ZD!"S!!5JR0dhS*cG0k#Fh6F!&J!#!!!SB%C$6P3""dC
  436. XMER4X,QJ!!!5JR0fXS*cGV+#FhD`!'!!#!!!SB&084%3"#&0dC'4PCLjS!*!$"+#
  437. XFhG@JR0h9S*cGe3!B!!)!!#KJ8e4%6!%)8h4NE'PL,QJ!N!-%S-IdfD$(p0QJar6
  438. XC!"J!!J!!+'"69&**!3K6G(*TEQFZD!#3!`5JR-e$S*c03k#Fc8-!'!!#!!!S!e"
  439. X"8d-"#("KFf0KE#jS!*!$"+#FaLHJR-BRS*c'*`!D!!)!!#J$899*3`%,8A9TBfY
  440. XNFQ&h,QJ!!!5JR-AQS*c&jU#FaHB!'!!#!!!S!dC26P3"#8C[ER40Ch)ZD!!!"+#
  441. XFaG@JR-A9S*c&e3!D!!)!!#J$49C&6J%+4ACPER40Ch)ZD!#3!`5JR-ClS*c'Hk#
  442. XFaRX!'J!#!!!S!eG*6N3"#eGTEQ4[GdeRFLjS!!!%S*c'"+#FaJ5JR-B%!"J!!J!
  443. X!+!0048j9!3P0C@je6@Gb,QJ!!!5JR-CIS*c'Ak#FaPm!(!!#!!!S!e084%B"$&0
  444. XdC%CTE'93DfFZD!#3!`5JR-BrS*c'2k#FaMm!(!!#!!!S!e0&4dd"$&0PCfePER4
  445. X-C()ZD!#3!`5JR-CYS*c'ED#FaQd!(!!#!!!S!e426d`"$94[EfaLEhK9G'PX,QJ
  446. X!!!5JR-B1S*c'$U#FaJi!'!!#!!!S!dp6993"#%p69A4TE#jS!'N!"+#FaF1JR-A
  447. X$S*c&``!D!!)!!#J$4%P"6!%,4'PKE'pR6@Gb,QJ!!!5JR-ADS*c&fU#FaGS!'!!
  448. X#!!!S!dC*6%8"#8CTE'90Ch)ZD!!!"+#FaHbJR-AXS*c&l!!8!!)!!#J$5%C6,J%
  449. X&5%C6,QJ!!!5JX6d9S,%p&D#a248!&J!#!!!S!d026%m""d0[E'pb,QJ!!!5JR-B
  450. XVS*c'+k#FaLX!(!!#!!!S!e*&8dm"$9*PFfpeFQ0P6@Gb,QJ!!!5L+DM@SLQSeU)
  451. XTU0B!'!!"!!!TeN9B9%8!#'9iG'9bELjS!'F!"+)H'jUL(KZDSKiEQJ!D!!%!!#R
  452. X@68&$33!+6@&M3@aPFR3ZD!!Z!!'L(KiESKiH'k)H(KX!&!!"!!!TeNp#5Li!"@p
  453. XLDLjS!!!"SKiH,U)H(LkL(KiZ!"S!!3!!+GC23NT$!!T[BQTME'&cFbjS!#i!!D)
  454. XH(QQL(KjTSKiHD3!@!!%!!#R@8&*28!!'F(*[F#jS!(-!!D)H'm1L(K[$SKiE``!
  455. X@!!%!!#R@3dp-6`!(BfpXEh)ZD!!!!B)!"0`!N!2d!J!*#3!"!!$rN!LL(MXi!"B
  456. X!!3!!+G9338j*!!G`B@jTBbjM!!!"S*c0ED#Fc@fJR-eY!"S!!J!!*rj0380)!3T
  457. X0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J!B!!%!!#R@3dp14J!)BfpZCQPR,QJ
  458. X!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N&%!!TdFQ&NFh4NBbjS!#i!!U)H(8@
  459. XL(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ&X,QJ!D!!$S-IeYk$(pEHJar@h!"B
  460. X!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD)H'rQL(K[j!"B!!3!!+GC$6dp5!!G
  461. XMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3!!+GC0380$!!PYB@0MEfjQ,QJ!!!5
  462. XL(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fecC'pc,QJ!!!5L(Kl6SKiHdk)H(Y-
  463. X!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+#FhH@JR0hPS*cGj3!@!!)!!#KJ9%P
  464. X043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`!@!!)!!#KJ4N019!%(4Q0ZG'`ZD!!
  465. X!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!%)8h4NC'9Q,QJ!N!-%S*cGeD#FhG@
  466. XJR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!#3!`5Jar6CS-IdfD$(p0N!'!!#!!!
  467. XSB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e$S*c03`!B!!)!!#J$8%&63`%)F'&
  468. XcBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J!!+!0498P$!3Y4G@PMDf4bBAFZD!!
  469. X!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!%*4QpZG%eRFLjS!!!%S*c&eD#FaG@
  470. XJR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLjS!*!$"+#FaRZJR-ClS*c'H`!D!!)
  471. X!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B%S*c'"+#FaJ3!'!!#!!!S!de&6P8
  472. X"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`!F!!)!!#J$8e4%4J%-8h4N4QPXC9"
  473. XVCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63%-8f9RE@9ZG%aNFLjS!*!
  474. X$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'*[H&9dD@`ZD!!!"+#FaJk
  475. XJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3!%S*c&`k#FaF1JR-A$!"S
  476. X!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-ADS*c&fJ!B!!)!!#J$4NP
  477. X-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!!+!0)4P-Z!39)4P-ZD!!
  478. X!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh)ZD!!!"+#FaLZJR-BVS*c
  479. X'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+)TU0DL+DM@SLQSeJ!B!!%
  480. X!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZD!"S!!3!!+GC0380"!!T
  481. X0B@0"E'9bG#jS!#jMD)!!!$!!N!2`!!!*#3!"!!$rN!LJb!28!"3!!J!!+&P"6P0
  482. X*!!4"6P0*!#k!!!!`!*!$l!!!#3N!!3!!rj!)S-J0[!!8!!)!!#KC98j*@!!%G@j
  483. XTH!!ZJ!!!0!#3!qJ!!!N*!!%!!2q3#+#Z`J)!'!!#!!!S"8e"3e3!#%eKBe4bBA"
  484. Xc!!##!!6F!*!$j!)!#3N!!3!!rj!)SKiPl`!@!!%!!#R938a-6`!(B@aXEf-ZB`!
  485. X!!D#Fc@fJR-eYS*c0E3!D!!)!!#Iq68&$5!%+6@&M5'9KC'9bF`!Z!!'L,'N1SLa
  486. XT$U)XD3i!'!!"!!!TeN026NB!#'0[EQCTCbjS!(-!!U)H([HL(KlhSKiHp`!D!!%
  487. X!!#R@9&*"4!!+G(*KC(0dC'-ZD!!Z!!+L(Ke&SKiG4D)H(88!'!!"!!!TeNG-6d)
  488. X!#'GXEf*KE#jS!'J!!k$(pEHJar@hS-IeY`!@!!)!!#KJ8e4%53%(Fh4ND@mZD!!
  489. X!!k)H'rQL(K[jSKiEq3!@!!%!!#R@3dp28J!(Bfp[FQ3ZD!!!!k)R#q+L*`[LSLF
  490. X,iJ!B!!%!!#R@68&$3`!*E@&MBfpZCLjS!!!%SKiH"U)H(JDL(Ki'!"B!!3!!+GC
  491. X08d42!!GYFf4[FbjS!!!%SKiHdk)H(Y1L(Kl6!"J!!3!!+GC6@908!!KcHA0dC@d
  492. XZD!#3!`5JR0hPS*cGjD#FhH8!&J!#!!!SB&4*688""R4TE@8ZD!"S!!5JR0dhS*c
  493. XG0k#Fh6F!&J!#!!!SB%C$6P3""dCMER4X,QJ!!!5JR0fXS*cGV+#FhD`!'!!#!!!
  494. XSB&084%3"#&0dC'4PCLjS!*!$"+#FhG@JR0h9S*cGe3!B!!)!!#KJ8e4%6!%)8h4
  495. XNE'PL,QJ!N!-%S-IdfD$(p0QJar6C!"J!!J!!+'"69&**!3K6G(*TEQFZD!#3!`5
  496. XJR-e$S*c03k#Fc8-!'!!#!!!S!e""8d-"#("KFf0KE#jS!*!$"+#FaLHJR-BRS*c
  497. X'*`!D!!)!!#J$899*3`%,8A9TBfYNFQ&h,QJ!!!5JR-AQS*c&jU#FaHB!'!!#!!!
  498. XS!dC26P3"#8C[ER40Ch)ZD!!!"+#FaG@JR-A9S*c&e3!D!!)!!#J$49C&6J%+4AC
  499. XPER40Ch)ZD!#3!`5JR-ClS*c'Hk#FaRX!'J!#!!!S!eG*6N3"#eGTEQ4[GdeRFLj
  500. XS!!!%S*c'"+#FaJ5JR-B%!"J!!J!!+!0048j9!3P0C@je6@Gb,QJ!!!5JR-CIS*c
  501. X'Ak#FaPm!(!!#!!!S!e084%B"$&0dC%CTE'93DfFZD!#3!`5JR-BrS*c'2k#FaMm
  502. X!(!!#!!!S!e0&4dd"$&0PCfePER4-C()ZD!#3!`5JR-CYS*c'ED#FaQd!(!!#!!!
  503. XS!e426d`"$94[EfaLEhK9G'PX,QJ!!!5JR-B1S*c'$U#FaJi!'!!#!!!S!dp6993
  504. X"#%p69A4TE#jS!'N!"+#FaF1JR-A$S*c&``!D!!)!!#J$4%P"6!%,4'PKE'pR6@G
  505. Xb,QJ!!!5JR-ADS*c&fU#FaGS!'!!#!!!S!dC*6%8"#8CTE'90Ch)ZD!!!"+#FaHb
  506. XJR-AXS*c&l!!8!!)!!#J$5%C6,J%&5%C6,QJ!!!5JX6d9S,%p&D#a248!&J!#!!!
  507. XS!d026%m""d0[E'pb,QJ!!!5JR-BVS*c'+k#FaLX!(!!#!!!S!e*&8dm"$9*PFfp
  508. XeFQ0P6@Gb,QJ!!!5L+DM@SLQSeU)TU0B!'!!"!!!TeN9B9%8!#'9iG'9bELjS!'F
  509. X!"+)H'jUL(KZDSKiEQJ!D!!%!!#R@68&$33!+6@&M3@aPFR3ZD!!ZS*b!!!6F!*!
  510. X$i!)!#3N!!3!!rj!)SKj,$3!B!!%!!#R968&$4J!*E@&MCQPXC5jM!!!"S*c0ED#
  511. XFc@fJR-eY!"S!!J!!*rj0380)!3T0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J!
  512. XB!!%!!#R@3dp14J!)BfpZCQPR,QJ!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N&
  513. X%!!TdFQ&NFh4NBbjS!#i!!U)H(8@L(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ&
  514. XX,QJ!D!!$S-IeYk$(pEHJar@h!"B!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD)
  515. XH'rQL(K[j!"B!!3!!+GC$6dp5!!GMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3!
  516. X!+GC0380$!!PYB@0MEfjQ,QJ!!!5L(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fe
  517. XcC'pc,QJ!!!5L(Kl6SKiHdk)H(Y-!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+#
  518. XFhH@JR0hPS*cGj3!@!!)!!#KJ9%P043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`!
  519. X@!!)!!#KJ4N019!%(4Q0ZG'`ZD!!!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!%
  520. X)8h4NC'9Q,QJ!N!-%S*cGeD#FhG@JR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!#
  521. X3!`5Jar6CS-IdfD$(p0N!'!!#!!!SB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e
  522. X$S*c03`!B!!)!!#J$8%&63`%)F'&cBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J!
  523. X!+!0498P$!3Y4G@PMDf4bBAFZD!!!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!%
  524. X*4QpZG%eRFLjS!!!%S*c&eD#FaG@JR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLj
  525. XS!*!$"+#FaRZJR-ClS*c'H`!D!!)!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B
  526. X%S*c'"+#FaJ3!'!!#!!!S!de&6P8"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`!
  527. XF!!)!!#J$8e4%4J%-8h4N4QPXC9"VCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J
  528. X$8d9(63%-8f9RE@9ZG%aNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%
  529. X09'p[E'*[H&9dD@`ZD!!!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'P
  530. XX,QJ!D3!%S*c&`k#FaF1JR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#
  531. XFaGUJR-ADS*c&fJ!B!!)!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-A
  532. XX!"3!!J!!+!0)4P-Z!39)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%
  533. X(3fpXEh)ZD!!!"+#FaLZJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)
  534. XZD!!!"+)TU0DL+DM@SLQSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)
  535. XH'jUL(KZD!"S!!3!!+GC0380"!!T0B@0"E'9bG#jS!#k!!!!S!*!$h!#3#8B!!3#
  536. X3"4S!N!-"!!J%E@&TEL#3!`!!!SJ!"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63%
  537. X-8f9RE@9ZG%aNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'*
  538. X[H&9dD@`ZD!!!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3!
  539. X%S*c&`k#FaF1JR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-A
  540. XDS*c&fJ!B!!)!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!
  541. X!+!0)4P-Z!39)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh)
  542. XZD!!!"+#FaLZJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+)
  543. XTU0DL+DM@SLQSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZ
  544. XD!"S!!3!!+GC0380"!!T0B@0"E'9bG#jS!#jMD)!!!$!!N!2`!!!*#3!"!!$rN!L
  545. XJb!28!"3!!J!!+&P"6P0*!!4"6P0*!#k!!!!`!*!$l!!!#3N!!3!!rj!)S-J0[!!
  546. X8!!)!!#KC98j*@!!%G@jTH!!ZJ!!!0!#3!qJ!!!N*!!%!!2q3#+#Z`J)!'!!#!!!
  547. XS"8e"3e3!#%eKBe4bBA"c!*!&D!#3!``+6%aKFh4$E'PMDb#!!!!S!!!'D!!!"Q`
  548. X!"J!!!QJ!!3!'!!!,+J!"!*!$#!C-3faTBfXJJ!!!,!!!"Q3!N!8'!!!"L!!"!!B
  549. X!!!UU!!%!N!--#%a6CA4$C@aX)*!$!*!$$!!!"Q!!!!CN!!!#3!!!!3#3"'!!N"-
  550. X%!*!H5-!"!`!(!*!$r!#3!f!!N"-%!*!H5-!"!`!)!*!$q!#3!f!!N"-%!*!J!3-
  551. X!"J#3!r3!N!0J!*!6"!#3(NM!!3-!N!A`!*!$B!#3%`3!N"jNFJ)%!!%!N!2X!*!
  552. X$B!#3%`3!N"m#!3-!!J#3!qJ!N!0J!*!6"!#3(Q4b!3-!!`#3!q3!N!0J!*!6"!#
  553. X3(Lf-!3-!"3#3!q!!N!0J!*!6"!#3(L!)!3-!"!!!"c!!N!-+!*!Eh%*i#NUGcNk
  554. Xk!&41ZJ"Q,$a*6N4B6VS&ENIkrmSQM%IkrmJQK%kk!'C1ZJ+S6VS'*Nkk!0a1ZJ#
  555. XS3QG)H2rr5'm!"%KA2c`!!5)krl*1ZJ1#6V83!#"Y!'a1N!#Tp&(i#Pjq!%kk![T
  556. XR#%U3!'F%#0!!"Nje)$J+H'B-,$aD6dj&6VS&"#!-4rVrCLD!6R9CMbmm4%&838*
  557. XRUD!J9b"3)RJ*##!0N!#*4rVr6LD!S#kTSb`m8e458dkk"-j(q[mf*S`X2%4548a
  558. X1ZJ5q)%`J"'F-6VS"YJ5!!*!$$'Ed6[S&DNj@rpT"q!N3)Np`)+!ZF!(3%9S4dX"
  559. X"qJ!5F!@J,P@25'm!!UQA6Pj1G5jbFh*M!%Ik"HiQZ!Tm,cJ+J'B#@)p1G8MRrrJ
  560. Xq,`!m8IJ+AQ!+@Bm[#+QP)"qJ3%kk!L4R4%IkrVJQL#!3CqBL3%U4CLi!%!$!,$a
  561. X$8N9-6VS%,'FN2Lm!2#"-)!4R$%kk!(J%J!#3!`aQp%kk"0"1ZJ'F60mIrdjeF!q
  562. XTb8kk"Aa1ZJ!)6VS%p%je)(J+l+!P)&!L5#)BB!T"k!!)G!'%'0$#8FRrp*!!L0#
  563. X*CJ*1G5)!S#iJH!VX)!'J*#*36qrr`#"23UJ!%M&T!!3!&U!93UG)D3!-)%qTmM)
  564. XB6VS"RL4BeF%d'#)BEM*R&P*"C`C53@FD6R8b+2rd6VS"Z0056R8b+2rd6VS"L00
  565. X56R8b+2rd6VS"MY1Urrj1G8kk!8ib+3!-5QN!#QBF9%*U$("MUFP53QEide*1G8k
  566. Xk!965U3!1de*1G8kk!@c5U3!18N*Q"0056R9$p4!#[P&Qe!aK2caQcP*#CJB+DJ!
  567. XArrib)9K")RVpI0+4NNV68Nje-KK1ZJ%14I83!0AB0"KR-L)BEL4R$P*"CK3b+2r
  568. Xd6VS"&Q!B-LMrp%kk!1KJ$M)Srr41ZJ$`B!C1ZJ%3dSh6NNje)KK1ZJ%%de*1G5"
  569. Xkr4!J1[d35UJ!!'FS-LJ!+'FL*#J!'&P#3qd!%02S!!69@6,m2ca#'4,S!$dbr+R
  570. X`88&Ql%(S!%!%J!#3!d"QaNje)(Vmc#!kr-abrh3!5UJ!!'FB[LJ!2@B50LJ!+'F
  571. X-e%1bU!!%C33L+!!%3HJ!3!5!!*!$3'E@)(VmUL"3"%%!%$$"jNS``Nje@Bm[2%0
  572. X24%8r"kQJ)&p3q!TH)!K1G5Kkr(BLG"J!Nq`!102-6R8SH[aH`[`!3#)d'"JSH[a
  573. XQdT41G5Kkr%V#r!"!)M3B#*+kr%j1G5Kkr$M#r!"!)M3B%0+kr$K1G5Kkr#E#r!"
  574. X!)M3B"!D"!*!$%%je6VVrSM)T!!a+D3!+CJC1Z[qiB!41Z[r@dUN!$Nje)&mb'$3
  575. XBX&KAbIrk5N*RrNl`)2`JAc)B0"L`Q&I*rrT+3QIq6[!JqL"I-KJd',"#EJU3!%&
  576. XY"Y"!3I!!!M!3Crj1m!!!)#m!"#p"!!3L,`!),em!"%MR2!!N!#B"5%,%`bJ!+J&
  577. X)4FM&e%4)3T!$`-(3JNcI!$`L(dje)#m!"#p"!!3L,`!),em!"%MR-3"1ZJ#F60m
  578. X!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!(`J!8cI!)`L(dje)#m!"#p"!!3
  579. XL,`!),em!"%MR-3"1ZJ!X60m!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!!`
  580. XJ!8cI!)`L(dje5S"U(%U"DJa%J%5"6VS!)%5"6R9%J%kk!"C%J%5"6R9+J@S+4)&
  581. X1ZJ!'4)"1G5im!!$rrl+!B`BL!(!!6R@`Kf)-J-&)3$)!3N")3%jeXSGL'Li!3N"
  582. X)3)$"5%")4ci!5%H1`6!(5%Fb"dje*!!Q!H+)iSQbKf,iJ-(!Kc)$`X!Z!dK(cX"
  583. X)4p+(C3L5JQ)%4)&1G90!B14q!&(i#PjCMbm'2`HTS#!IC`!!VLC!@Bm[#kQP*Km
  584. XJ#bJ$8NI[4e*(1JGJ&PQ2,`Br"kQJ)"pR!!#)8NF'K!!!Irj9Mbm!UDB`(`J!!!9
  585. XQh&$i#Pl24CT(CK`J!k"!,`ZTSL!6C`!!@Lm,UC)S8b",S#P`!8je)!5K(L!)C`!
  586. X!3LK),`ZTSL!6C`!!0L",)!0J'&Q2,`Br"kQJ)"pR!!!L8NFJ3#!m!!"rrLm))&!
  587. XL60R!S#kTSe(0rpUCa#C-F!&1G5",5N9Q"+!M6R@J(dje-MbTm%2kqXC1ZJ"S-Mb
  588. XTmN2kqbK1ZJ"F-MbTmd2kqaa1ZJ"3-MbTp%2kq`K1qJ"%,`JJE`!),fJ!!J!))(J
  589. X#TR!-d*!!X,J#UQBN6VS!C$)mUI"1ZJ"%-MbTmNkk!$`b2+Rc6VS!0$)mUI41ZJ!
  590. XX)&p1G6!"S8BN5(!-5RJ#MQS%T4jJ!U%H-!'J4c$m6VNJb6$m6[NJbNje-!'K4L*
  591. XS!!LJ(c!")%QJ4dje!*!%6R8J1[riC`3J3%+3!%je!!!"!*!$0IS!!$6k!!!"QJ!
  592. XNEb!$8!#3!a`"NJ!15%&65!#3!hTD6dj&!*!$KNY*6N3!N!159da23`#3!jj*6N4
  593. XB!*!$UN024%8!!`#f4%&833#3!qC69&*6!*!$mN4548`!N!2q8eP08`!!!3T$6NC
  594. X(!!!"&P0*@N8!!!%L3e*&6!!"!5j%3P9(!!%"4PK6@8d!!3&H!!%!N!FQl%`!!2r
  595. Xr!!!(IJ!Ql0J!!2rr!!!$p!!QlG!!!2rr!!!(A!!Ql(3!!2rr!!!VJJ!QlD`!!2r
  596. Xr!!!&AJ!QlI`!!rrr!!!&`J#3"36rr`!!"FS!N!8"rrm8!#h'!#EYi!!!rrm!!!A
  597. X5!#EXh!!!rrm!!!A@!#EXY!!!rrm!!!AD!#EYe!!!rrm!!!AH!#EXe!!#rrm!!!G
  598. X`!#EXl2rr!!B!!!93!#EYj!!$rrm!!!AL!*!&"2rr!!!&jJ#3"32rr`!!"HS!N!8
  599. X%rrm!!!AZ!*!&!rrr!!!&mJ#3"36rr`!!"IB!N!3&E@YKD'`"-N@Q!:
  600. END_OF_FILE
  601. if test 17003 -ne `wc -c <'mac/MD.proj.hqx'`; then
  602.     echo shar: \"'mac/MD.proj.hqx'\" unpacked with wrong size!
  603. fi
  604. # end of 'mac/MD.proj.hqx'
  605. fi
  606. if test -f 'others/exesmurf.c' -a "${1}" != "-c" ; then 
  607.   echo shar: Will not clobber existing file \"'others/exesmurf.c'\"
  608. else
  609. echo shar: Extracting \"'others/exesmurf.c'\" \(5158 characters\)
  610. sed "s/^X//" >'others/exesmurf.c' <<'END_OF_FILE'
  611. X/******************************************************************************
  612. X*                                          *
  613. X*              EXE header list and modify                  *
  614. X*                                          *
  615. X*             by Pierre Martineau, 90/05/20                  *
  616. X*                                          *
  617. X*                 Version 1.1                      *
  618. X*                                          *
  619. X*              Placed in the public domain                  *
  620. X*                                          *
  621. X******************************************************************************/
  622. X
  623. X#include <string.h>
  624. X#include <stdlib.h>
  625. X#include <stdio.h>
  626. X#include <math.h>
  627. X
  628. X#define BOOLEAN int
  629. X#define TRUE    1
  630. X#define FALSE    0
  631. X
  632. XFILE *wrkfile;
  633. Xlong min, max, stk;
  634. XBOOLEAN listflg = FALSE;
  635. XBOOLEAN minflg = FALSE;
  636. XBOOLEAN maxflg = FALSE;
  637. XBOOLEAN stkflg = FALSE;
  638. X
  639. Xstruct exehdr {
  640. Xunsigned signature;
  641. Xunsigned mod512;
  642. Xunsigned pages;
  643. Xunsigned relocitems;
  644. Xunsigned headerparas;
  645. Xunsigned minalloc;
  646. Xunsigned maxalloc;
  647. Xunsigned ss;
  648. Xunsigned sp;
  649. Xunsigned checksum;
  650. Xunsigned ip;
  651. Xunsigned cs;
  652. Xunsigned relocptr;
  653. Xunsigned ovlnum;
  654. X} exehdr_area;
  655. X
  656. Xmain(argc, argv)
  657. Xint argc;
  658. Xchar *argv[];
  659. X{
  660. Xchar *dot, *slash;
  661. Xchar fname[128];
  662. Xchar *args;
  663. Xint i;
  664. Xlong offset, oldstk;
  665. X
  666. X    printf("EXE list and modify V1.1, by Pierre Martineau, 90/05/20.\n");
  667. X    printf("This program is public domain and may be freely distributed.\n");
  668. X
  669. X    if ((argc < 2) || (argc > 6)) {
  670. X    usage();
  671. X    return;
  672. X    }
  673. X
  674. X/*  Extract filename from first argumemt  */
  675. X
  676. X    strcpy(fname, argv[1]);
  677. X    dot = strrchr(fname, '.');
  678. X    slash = strrchr(fname, '\\');
  679. X    if ((dot == NULL) || (slash > dot))
  680. X    strcat(fname, ".exe");
  681. X
  682. X    if ((wrkfile = fopen(fname, "r+b")) == NULL) {
  683. X    printf("\nCouldn't open file %s\n", fname);
  684. X    return;
  685. X    }
  686. X
  687. X/*  Process any remaining arguments  */
  688. X
  689. X    if (argc == 2)
  690. X    listflg = TRUE;
  691. X    else {
  692. X    i = 2;
  693. X    while (argc-- > 2) {
  694. X        args = argv[i];
  695. X        if ((args[0] != '-') && (args[0] != '/')) {
  696. X        printf("\nInvalid switch in paramater %s!\n", argv[i]);
  697. X        usage();
  698. X        return;
  699. X        }
  700. X        args++;
  701. X        if (strnicmp(args, "min", 3) == 0) {
  702. X        args += 3;
  703. X        min = atol(args);
  704. X        minflg = TRUE;
  705. X        }
  706. X        else if (strnicmp(args, "max", 3) == 0) {
  707. X        args += 3;
  708. X        max = atol(args);
  709. X        maxflg = TRUE;
  710. X        }
  711. X        else if (strnicmp(args, "stk", 3) == 0) {
  712. X        args += 3;
  713. X        stk = atol(args);
  714. X        stkflg = TRUE;
  715. X        }
  716. X        else if (strnicmp(args, "v", 1) == 0)
  717. X        listflg = TRUE;
  718. X        else {
  719. X        printf("\nInvalid paramater %s!\n", argv[i]);
  720. X        usage();
  721. X        return;
  722. X        }
  723. X        i++;
  724. X    }
  725. X    }
  726. X
  727. X    fread(&exehdr_area, sizeof (struct exehdr), 1, wrkfile);
  728. X    if (exehdr_area.signature != 0x5a4d) {
  729. X    printf("\nNot an EXE file!\n");
  730. X    return;
  731. X    }
  732. X    while(!feof(wrkfile)) {
  733. X    if (listflg)
  734. X        show_hdr();
  735. X    if ((minflg || maxflg || stkflg) && (exehdr_area.ovlnum == 0) && (exehdr_area.signature == 0x5a4d)) {
  736. X        if (minflg)
  737. X        exehdr_area.minalloc = min;
  738. X        if (maxflg)
  739. X        exehdr_area.maxalloc = max;
  740. X        if (stkflg) {
  741. X        oldstk = exehdr_area.sp;
  742. X        exehdr_area.sp = stk;
  743. X        if (!minflg) {
  744. X            exehdr_area.minalloc += ((stk - oldstk) / 16);
  745. X            printf("\nAdjusting size of minalloc!\n");
  746. X        }
  747. X        }
  748. X        fseek(wrkfile, ftell(wrkfile) - sizeof (struct exehdr), SEEK_SET);
  749. X        fwrite(&exehdr_area, sizeof (struct exehdr), 1, wrkfile);
  750. X        if (ferror(wrkfile)) {
  751. X        printf("Write error while trying to update header!\n");
  752. X        fclose(wrkfile);
  753. X        return;
  754. X        }
  755. X    }
  756. X    offset = exehdr_area.pages;
  757. X    offset *= 512L;
  758. X    offset -= sizeof(struct exehdr);
  759. X    fseek(wrkfile, offset, SEEK_CUR);
  760. X    fread(&exehdr_area, sizeof (struct exehdr), 1, wrkfile);
  761. X    if (ferror(wrkfile)) {
  762. X        printf("Read error while trying to get a header!\n");
  763. X        fclose(wrkfile);
  764. X        return;
  765. X    }
  766. X    }
  767. X    fclose(wrkfile);
  768. X}
  769. X
  770. Xshow_hdr()
  771. X{
  772. Xlong lsize;
  773. X
  774. X    lsize = exehdr_area.pages;
  775. X    if (exehdr_area.mod512 != 0)
  776. X    lsize--;
  777. X    lsize *= 512L;
  778. X    lsize += exehdr_area.minalloc * 16;
  779. X    lsize += exehdr_area.mod512;
  780. X    lsize -= exehdr_area.headerparas * 16;
  781. X
  782. X    printf("\nOverlay: %d\n", exehdr_area.ovlnum);
  783. X    printf("--------\n");
  784. X    printf("Size (512 byte pages)\t-%6x\t\t%6u\n", exehdr_area.pages, exehdr_area.pages);
  785. X    printf("Remainder (last page)\t-%6x\t\t%6u\n", exehdr_area.mod512, exehdr_area.mod512);
  786. X    printf("Header size (in paras)\t-%6x\t\t%6u\n", exehdr_area.headerparas, exehdr_area.headerparas);
  787. X    printf("Minalloc (in paras)\t-%6x\t\t%6u\n", exehdr_area.minalloc, exehdr_area.minalloc);
  788. X    printf("Maxalloc (in paras)\t-%6x\t\t%6u\n", exehdr_area.maxalloc, exehdr_area.maxalloc);
  789. X    printf("Load size (in bytes)\t-%6lx\t\t%6lu\n", lsize, lsize);
  790. X    printf("Relocation items\t-%6x\t\t%6u\n", exehdr_area.relocitems, exehdr_area.relocitems);
  791. X    printf("Relocation table offset\t-%6x\t\t%6u\n", exehdr_area.relocptr, exehdr_area.relocptr);
  792. X    printf("Checksum\t\t-%6x\t\t%6u\n", exehdr_area.checksum, exehdr_area.checksum);
  793. X    printf("Initial CS:IP\t\t-  %04x:%04x\n", exehdr_area.cs, exehdr_area.ip);
  794. X    printf("Initial SS:SP\t\t-  %04x:%04x\n", exehdr_area.ss, exehdr_area.sp);
  795. X}
  796. X
  797. Xusage()
  798. X{
  799. X    printf("\nUsage: exesmurf exe_file [/v] [/min#####] [/max#####] [/stk#####]\n");
  800. X    printf("       where: min   = minalloc\n");
  801. X    printf("              max   = maxalloc\n");
  802. X    printf("              stk   = stack size\n");
  803. X    printf("              ##### = decimal number of paragraphs.\n");
  804. X}
  805. END_OF_FILE
  806. if test 5158 -ne `wc -c <'others/exesmurf.c'`; then
  807.     echo shar: \"'others/exesmurf.c'\" unpacked with wrong size!
  808. fi
  809. # end of 'others/exesmurf.c'
  810. fi
  811. echo shar: End of archive 19 \(of 24\).
  812. cp /dev/null ark19isdone
  813. MISSING=""
  814. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ; do
  815.     if test ! -f ark${I}isdone ; then
  816.     MISSING="${MISSING} ${I}"
  817.     fi
  818. done
  819. if test "${MISSING}" = "" ; then
  820.     echo You have unpacked all 24 archives.
  821.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  822. else
  823.     echo You still need to unpack the following archives:
  824.     echo "        " ${MISSING}
  825. fi
  826. ##  End of shell archive.
  827. exit 0
  828.